package ejb.cbm.seguridad.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="PERFIL")
@SequenceGenerator(name="PERFIL_SEQ", sequenceName="sq_perfil")
public class PerfilEntity  implements java.io.Serializable {

    // Fields    

     /**
	 * 
	 */
	private static final long serialVersionUID = 4650820178762638201L;
	private Long codigoperfil;
     private String descripcionperfil;
     private Long flagextorno;
     private Long tipoperfil;
     private Long flagactivo;
     private String usuarioregistro;
     private Date fecharegistro;
     private String usuariomodificacion;
     private Date fechamodificacion;
     private List<PerfilOpcionEntity> perfilopcions = new ArrayList<PerfilOpcionEntity>(0);

    // Constructors

    /** default constructor */
    public PerfilEntity() {
    }

	/** minimal constructor */
    public PerfilEntity(Long codigoperfil, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion) {
        this.codigoperfil = codigoperfil;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
    }
    
    /** full constructor */
    public PerfilEntity(Long codigoperfil, String descripcionperfil,Long tipoperfil, Long flagextorno, Long flagactivo, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion,List<PerfilOpcionEntity> perfilopcions) {
        this.codigoperfil = codigoperfil;
        this.descripcionperfil = descripcionperfil;
        this.flagextorno = flagextorno;
        this.flagactivo = flagactivo;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
        this.perfilopcions = perfilopcions;
        this.tipoperfil = tipoperfil;
    }

    // Property accessors
    @Id
    @Column(name="CODIGOPERFIL", unique=true, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="PERFIL_SEQ")
    public Long getCodigoperfil() {
        return this.codigoperfil;
    }
    
    public void setCodigoperfil(Long codigoperfil) {
        this.codigoperfil = codigoperfil;
    }
    
    @Column(name="DESCRIPCIONPERFIL", unique=false, nullable=true, insertable=true, updatable=true, length=50)
    public String getDescripcionperfil() {
        return this.descripcionperfil;
    }
    
    public void setDescripcionperfil(String descripcionperfil) {
        this.descripcionperfil = descripcionperfil;
    }
        
    @Column(name="FLAGEXTORNO", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagextorno() {
        return this.flagextorno;
    }
    
    public void setFlagextorno(Long flagextorno) {
        this.flagextorno = flagextorno;
    }
    
    @Column(name="FLAGACTIVO", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagactivo() {
        return this.flagactivo;
    }
    
    public void setFlagactivo(Long flagactivo) {
        this.flagactivo = flagactivo;
    }
    
    @Column(name="USUARIOREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuarioregistro() {
        return this.usuarioregistro;
    }
    
    public void setUsuarioregistro(String usuarioregistro) {
        this.usuarioregistro = usuarioregistro;
    }
    
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=7)
    public Date getFecharegistro() {
        return this.fecharegistro;
    }
    
    public void setFecharegistro(Date fecharegistro) {
        this.fecharegistro = fecharegistro;
    }
    
    @Column(name="USUARIOMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuariomodificacion() {
        return this.usuariomodificacion;
    }
    
    public void setUsuariomodificacion(String usuariomodificacion) {
        this.usuariomodificacion = usuariomodificacion;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=7)
    public Date getFechamodificacion() {
        return this.fechamodificacion;
    }
    
    public void setFechamodificacion(Date fechamodificacion) {
        this.fechamodificacion = fechamodificacion;
    }

    @OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.LAZY, mappedBy="perfil")
    public List<PerfilOpcionEntity> getPerfilopcions() {
        return this.perfilopcions;
    }
    
    public void setPerfilopcions(List<PerfilOpcionEntity> perfilopcions) {
        this.perfilopcions = perfilopcions;
    }

    @Column(name="TIPOPERFIL", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
	public Long getTipoperfil() {
		return tipoperfil;
	}

	public void setTipoperfil(Long tipoperfil) {
		this.tipoperfil = tipoperfil;
	}
}